package com.videoweb.config;

import com.videoweb.service.ChunkedUploadService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Slf4j
@Component
@ConditionalOnProperty(
    value = "app.upload.cleanup.enabled", 
    havingValue = "true", 
    matchIfMissing = true
)
public class UploadCleanupTask {
    
    @Autowired
    private ChunkedUploadService chunkedUploadService;
    
    /**
     * 每小时执行一次清理任务
     * 清理超时的上传记录和临时文件
     */
    @Scheduled(cron = "0 0 * * * ?") // 每小时的0分0秒执行
    public void cleanupTimeoutUploads() {
        log.info("开始执行定时清理任务：清理超时的上传记录");
        
        try {
            chunkedUploadService.cleanupTimeoutUploads();
            log.info("定时清理任务执行完成");
        } catch (Exception e) {
            log.error("定时清理任务执行失败", e);
        }
    }
    
    /**
     * 每天凌晨2点执行深度清理
     * 清理所有可能的垃圾文件
     */
    @Scheduled(cron = "0 0 2 * * ?") // 每天凌晨2点执行
    public void deepCleanup() {
        log.info("开始执行深度清理任务");
        
        try {
            // 这里可以添加更深度的清理逻辑
            // 比如检查文件系统中的孤立文件等
            chunkedUploadService.cleanupTimeoutUploads();
            
            log.info("深度清理任务执行完成");
        } catch (Exception e) {
            log.error("深度清理任务执行失败", e);
        }
    }
} 